﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Datos.InterfacesDAO;
using Base_de_Datos.Excepciones;
using ConexiónBD;
using System.Data.SqlClient;
using Datos.Excepciones;
using Modelo;

namespace Datos
{
    public class DatosSMS : IDAO_SMS
    {
        //<summary>
        //Método que Inserta Reporte en la BD
        //</summary>
        public bool InsertaReporte(string reporte, string velocidad, string imagen,
                                    string ubicSent, string hora)
        {
            try
            {
                ConexionBD.Conectar();
                String[,] parametro = new String[2, 5];
                parametro[0, 0] = Datos_Recursos.MensajeReporte; parametro[1, 0] = reporte;
                parametro[0, 1] = Datos_Recursos.Velocidad; parametro[1, 1] = velocidad;
                parametro[0, 2] = Datos_Recursos.ImagenReporte; parametro[1, 2] = imagen;
                parametro[0, 3] = Datos_Recursos.UbicacionSentido; parametro[1, 3] = ubicSent;
                parametro[0, 4] = Datos_Recursos.Horario; parametro[1, 4] = hora;

                SqlDataReader sql = ConexionBD.EjecutarStoreProcedureConParametros(Datos_Recursos.SPRegistrarReporte, parametro, 5);

                return true;
            }
            catch (ExcepcionEjecucionBD e)
            {
                throw new ExcepcionRegistrar(Datos_Recursos.Registro, e);
            }
            finally
            {
                ConexionBD.Desconectar();
            }
        }

        //<summary>
        //Método que imprime la lista de Usuarios a Reportar sobre el Tráfico
        //</summary>
        public IList<Usuario> ListaUsuariosReporte(string ubicSent)
        {
            try
            {
                ConexionBD.Conectar();
                IList<Usuario> lista = new List<Usuario>();

                String[,] parametro = new String[2, 1];
                parametro[0, 0] = Datos_Recursos.UbicacionSentido; parametro[1, 0] = ubicSent;

                SqlDataReader sql = ConexionBD.EjecutarStoreProcedureConParametros(Datos_Recursos.SPConsultaTelefonosUsuarios,parametro,1);

                if (sql.HasRows.Equals(true))
                {
                    while (sql.Read())
                    {
                        Usuario usuarioReporte= new Usuario();
                        usuarioReporte.NombreUsuario = sql[Datos_Recursos.IdentificacionUsuario].ToString();
                        usuarioReporte.CelularUsuario = sql[Datos_Recursos.celular].ToString();

                        lista.Add(usuarioReporte);

                    }
                }
                return lista;
            }
            catch (ExcepcionEjecucionBD e)
            {
                throw new ExcepcionConsultar(Datos_Recursos.Consulta, e);
            }
            finally
            {
                ConexionBD.Desconectar();
            }
        }
    }
}
